Skip to content

fix(ci): fix ci by install protobuf-compiler#2

Merged
jja725 merged 2 commits into
lance-format:mainfrom
jja725:feat/initial-port
Mar 25, 2026
Merged

fix(ci): fix ci by install protobuf-compiler#2
jja725 merged 2 commits into
lance-format:mainfrom
jja725:feat/initial-port

Conversation

@jja725
Copy link
Copy Markdown
Collaborator

@jja725 jja725 commented Mar 24, 2026

Summary

  • Install protobuf-compiler in all Linux CI jobs (clippy, test, rustdoc, MSRV)
  • Install protobuf via brew in the macOS CI job

Motivation

lance-encoding has a build script that requires protoc. Without it, CI fails with:

Could not find `protoc`. If `protoc` is installed, try setting the `PROTOC` environment variable...

Test plan

  • CI should pass after this change

🤖 Generated with Claude Code

@jja725 jja725 force-pushed the feat/initial-port branch from df9f87b to 27d3491 Compare March 24, 2026 19:59
@jja725 jja725 changed the title feat: port lance-c crate from lance monorepo fix(ci): install protobuf-compiler for lance-encoding build Mar 24, 2026
@jja725 jja725 force-pushed the feat/initial-port branch from 27d3491 to ba92b41 Compare March 24, 2026 20:06
lance-encoding's build script requires protoc. Install it via
apt-get on Linux and brew on macOS.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jja725 jja725 force-pushed the feat/initial-port branch 3 times, most recently from d6e49ea to 31140e1 Compare March 24, 2026 20:15
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jja725 jja725 force-pushed the feat/initial-port branch from 31140e1 to 65205c6 Compare March 24, 2026 20:17
@jja725
Copy link
Copy Markdown
Collaborator Author

jja725 commented Mar 24, 2026

@Xuanwo do you mind take a look when you are free? Thanks

@jja725 jja725 changed the title fix(ci): install protobuf-compiler for lance-encoding build fix(ci): fix ci by install protobuf-compiler Mar 24, 2026
@jja725 jja725 merged commit 8e7811b into lance-format:main Mar 25, 2026
7 checks passed
jja725 added a commit that referenced this pull request Apr 27, 2026
## Summary

Closes the README "Phase 4 — Package distribution" line item so C++
engines (Velox, DuckDB, Iceberg-cpp) can consume `lance-c` through
standard package managers instead of building from a git checkout.

After this PR, every consumer's CMakeLists.txt is a one-liner:

```cmake
find_package(LanceC 0.1 REQUIRED)
target_link_libraries(myapp PRIVATE LanceC::lance_c)
```

…regardless of whether the lib was obtained via `cmake --install`,
`vcpkg install lance-c`, `conan install --requires=lance-c/0.1.0`, or an
unpacked GitHub Release tarball. Transitive platform deps (`-framework
CoreFoundation/Security/SystemConfiguration` on macOS, `pthread/dl/m` on
Linux) are declared once on the imported target — consumers don't
redeclare them.

## What's in the box

- **Top-level `CMakeLists.txt`** wrapping cargo via
[Corrosion](https://github.com/corrosion-rs/corrosion). Opt-in (no
impact on `cargo build`).
- **`LanceC::lance_c{,_static,_shared}` imported targets** +
`LanceCConfig.cmake` package config + `lance-c.pc` pkg-config.
- **Header migration** `include/lance.h` → `include/lance/lance.h` (and
`.hpp`). Convention matches librsvg; breaking for git-checkout vendors
(called out below).
- **`cargo-c` metadata** in `Cargo.toml` for distro packagers who prefer
`cargo cinstall`.
- **Release workflow** (`.github/workflows/release.yml`) building
tarballs on `v*.*.*` tag pushes for 4 triples (Linux+macOS ×
x86_64+aarch64) using native arm64 runners.
- **`consumer-smoke-test`** + **`cbindgen-drift`** jobs added to
`ci.yml`.
- **vcpkg port** at `ports/lance-c/` and **Conan recipe** at
`recipes/lance-c/` — both default to downloading prebuilts (sidesteps
[vcpkg#33824](microsoft/vcpkg#33824)
Rust-in-vcpkg restriction), with `from-source` / `from_source=True`
opt-in.
- **Routine `lance` dep bump 3.0.1 → 4.0.1** as part of pinning a
release version.
- **`examples/cmake-consumer/`** as the smoke-test artifact.

## Breaking change

External consumers vendoring `lance.h` from a git checkout must update:

```diff
-#include "lance.h"
+#include <lance/lance.h>
```

## Test Plan

Acceptance criteria from the spec, status as of this PR:

- [x] **#1** Fresh build + `cmake --install` produces the documented
layout (verified locally on macOS arm64)
- [x] **#2** `examples/cmake-consumer` builds against the install via
`find_package(LanceC)` and runs (verified locally)
- [x] **#7** `cbindgen-drift` job runs in this PR's CI
- [x] **#8** README documents all four install paths and Phase 4 row is
checked off
- [ ] **#3** vcpkg port end-to-end (deferred — needs a published GH
Release with real SHA512s)
- [ ] **#4** Conan recipe end-to-end (deferred — needs published
SHA256s)
- [ ] **#5** Release CI green on `v0.1.0` tag (deferred — happens at
first tag)
- [ ] **#6** Upstream microsoft/vcpkg + conan-io/conan-center-index PRs
(deferred — happens after #5)

## Reference

- Spec:
[`docs/superpowers/specs/2026-04-27-package-distribution-design.md`](docs/superpowers/specs/2026-04-27-package-distribution-design.md)
- Plan:
[`docs/superpowers/plans/2026-04-27-package-distribution.md`](docs/superpowers/plans/2026-04-27-package-distribution.md)
- Velox consumer: facebookincubator/velox#16556 (lands as-is; future PR
can adopt `find_package(LanceC)`)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant